package com.flash.variety.utils;

import com.flash.variety.domain.TbCuisine;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @description: TODO
* @author admin
* @date 2023/1/79:17
* @version 1.0
*/
public class PoiUtils {

    public static Map poi(List<TbCuisine> list) throws IOException {

        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss");
        XSSFWorkbook wb = new XSSFWorkbook();
        //标题行抽出字段
        String[] title = {"序号", "菜品id", "菜品名称", "菜品描述", "菜品金额", "菜品图片", "菜品类型", "商户id"};
        //设置sheet名称，并创建新的sheet对象
        Sheet stuSheet = wb.createSheet();
        //获取表头行
        Row titleRow = stuSheet.createRow(0);
        //创建单元格，设置style居中，字体，单元格大小等
        CellStyle style = wb.createCellStyle();
        Cell cell = null;
        //把已经写好的标题行写入excel文件中
        for (int i = 0; i < title.length; i++) {
            cell = titleRow.createCell(i);
            cell.setCellValue(title[i]);
            cell.setCellStyle(style);
        }
        //把从数据库中取得的数据一一写入excel文件中
        Row row = null;
        for (int i = 0; i < list .size(); i++) {
            //创建list.size()行数据
            row = stuSheet.createRow(i + 1);
            //把值一一写进单元格里
            //设置第一列为自动递增的序号
            row.createCell(0).setCellValue(i + 1);
            row.createCell(1).setCellValue(list.get(i).getCuisineId());
            row.createCell(2).setCellValue(list.get(i).getCuisineName());
            row.createCell(3).setCellValue(list.get(i).getCuisineDescribe());
            //把时间转换为指定格式的字符串再写入excel文件中
            row.createCell(4).setCellValue(list.get(i).getCuisineMoney().doubleValue());
            row.createCell(5).setCellValue(list.get(i).getCuisineImage());
            row.createCell(6).setCellValue(list.get(i).getCuisineType());
            row.createCell(7).setCellValue(list.get(i).getCommercialId());

        }
        //设置单元格宽度自适应，在此基础上把宽度调至1.5倍
        for (int i = 0; i < title.length; i++) {
            stuSheet.autoSizeColumn(i, true);
            stuSheet.setColumnWidth(i, stuSheet.getColumnWidth(i) * 15 / 10);
        }
        //获取配置文件中保存对应excel文件的路径，本地也可以直接写成 D:\testDir 路径
        String folderPath = "D:\\学习资料\\图片";
        //创建上传文件目录
        File folder = new File(folderPath);
        //如果文件夹不存在创建对应的文件夹
        if (!folder.exists()) {
            folder.mkdirs();
        }
        //设置文件名
        String fileName = sdf1.format(new Date()) + "测试报表导出" + ".xlsx";
        String savePath = folderPath + File.separator + fileName;
        OutputStream fileOut = new FileOutputStream(savePath);
        wb.write(fileOut);
        fileOut.close();
        //OSS
        /* return   hostName+fileName;*/
/*        File file =new File("D:\\学习资料\\图片\\"+fileName);
        file.delete();*/
        Map map=new HashMap();
        map.put("path", "D:\\学习资料\\图片\\"+fileName);
        map.put("fileName",fileName);
        return  map;
    }
}
